﻿Public Class frmListaSchematow

    Private mvarSchemat As clsTrSzukanie
    Private mvarDbHolder As clsDataBase
    Private mvarUzytkownik As clsUzytkownik
    Private mvarWyznUruchomienia As Boolean

    Public Sub New()

        ' To wywołanie jest wymagane przez projektanta.
        InitializeComponent()

        ' Dodaj inicjację po wywołaniu funkcji InitializeComponent().
        mvarDbHolder = New clsDataBase(VAR_CONNECTION_PARAMETERS, VAR_ERROR_HANDLER)

        mvarUzytkownik = CType(clsUzytkownik.Instance(), clsUzytkownik)

        PobierzKlientow()

    End Sub


    Private Sub PobierzKlientow()

        Dim lvarDataTable As New DataTable

        lvarDataTable = clsKlient.PobierzWszystkichKlientow(mvarDbHolder, VAR_ERROR_HANDLER)

        If Not lvarDataTable Is Nothing Then
            For Each lvarRow As DataRow In lvarDataTable.Rows
                cmbNazwaFirmy.Items.Add(New clsKlient(CInt(lvarRow("id")), IIf(IsDBNull(lvarRow("nazwa_pelna")), "", lvarRow("nazwa_pelna")).ToString(), IIf(IsDBNull(lvarRow("nazwa_skrocona")), "", lvarRow("nazwa_skrocona")).ToString(), IIf(IsDBNull(lvarRow("ulica")), "", lvarRow("ulica")).ToString(), IIf(IsDBNull(lvarRow("numer")), "", lvarRow("numer")).ToString(), IIf(IsDBNull(lvarRow("kod_pocztowy")), "", lvarRow("kod_pocztowy")).ToString(), IIf(IsDBNull(lvarRow("miejscowosc")), "", lvarRow("miejscowosc")).ToString(), IIf(IsDBNull(lvarRow("kraj")), "", lvarRow("kraj")).ToString(), IIf(IsDBNull(lvarRow("telefon")), "", lvarRow("telefon")).ToString(), IIf(IsDBNull(lvarRow("e_mail")), "", lvarRow("e_mail")).ToString(), IIf(IsDBNull(lvarRow("nip")), "", lvarRow("nip")).ToString(), IIf(IsDBNull(lvarRow("etykieta")), "", lvarRow("etykieta")).ToString(), IIf(IsDBNull(lvarRow("wysylka")), "", lvarRow("wysylka")).ToString(), IIf(IsDBNull(lvarRow("termin_platnosci")), "", lvarRow("termin_platnosci")).ToString(), IIf(IsDBNull(lvarRow("uwagi")), "", lvarRow("uwagi")).ToString()))
            Next
        End If

    End Sub

    Private Sub Szukaj()

        Dim lvarCommand As String
        Dim lvarI As Integer
        Dim lvarWyzn As Boolean = False

        If txtNumerSchematu.Text = String.Empty And dtpDataRealizacjiOd.Checked = False And dtpDataRealizacjiDo.Checked = False And chbDataRealizacji.Checked = False And cmbNazwaFirmy.SelectedIndex = -1 Then
            lvarCommand = " AND zlecenie.status_id <> 6"
        Else
            If dtpDataRealizacjiOd.Value.Date > dtpDataRealizacjiDo.Value.Date Then
                MessageBox.Show("Wybierz poprawnie kryterium wyszukiwania", "WIREMET")
            Else
                lvarCommand = " AND zlecenie.status_id <> 6 AND"
                If txtNumerSchematu.TextLength > 0 Then
                    lvarCommand = lvarCommand + " schemat.id = " & txtNumerSchematu.Text
                    lvarWyzn = True
                End If
                If cmbNazwaFirmy.SelectedIndex <> -1 Then
                    If lvarWyzn = True Then
                        lvarCommand = lvarCommand + " AND"
                    End If
                    lvarCommand = lvarCommand + " klient_id = " & CType(cmbNazwaFirmy.SelectedItem, clsKlient).Id
                    lvarWyzn = True
                End If
                If dtpDataRealizacjiOd.Checked Or dtpDataRealizacjiDo.Checked Or chbDataRealizacji.Checked Then
                    If lvarWyzn = True Then
                        lvarCommand = lvarCommand + " AND"
                    End If
                    lvarCommand = lvarCommand + " zlecenie.termin::date between '" & dtpDataRealizacjiOd.Value.Date & "' AND '" & dtpDataRealizacjiDo.Value.Date & "'"
                    lvarWyzn = True
                End If
            End If
        End If

        mvarSchemat = New clsTrSzukanie
        mvarSchemat.SzukajSchematu(mvarDbHolder, lvarCommand)

        dgvInformacje.Rows.Clear()
        If mvarSchemat.SchematTab.Rows.Count = 0 Then
            MessageBox.Show("Nie ma takich schematów.", "WIREMET")
        Else
            For Each lvarRow As DataRow In mvarSchemat.SchematTab.Rows
                lvarI += 1
                dgvInformacje.Rows.Add(lvarI, lvarRow.Item("schemat"), lvarRow.Item("klient"), CType(lvarRow.Item("termin"), Date).ToShortDateString, lvarRow.Item("pozycja_zlecenia_id"))

                Select Case CType(lvarRow.Item("termin"), Date).ToShortDateString
                    Case Date.Today.ToString()
                        dgvInformacje.Rows.Item(lvarI - 1).DefaultCellStyle.BackColor = Color.Moccasin
                    Case DateSerial(Today.Year, Today.Month, Today.Day + 1).ToString()
                        dgvInformacje.Rows.Item(lvarI - 1).DefaultCellStyle.BackColor = Color.Moccasin
                    Case Is < DateSerial(Today.Year, Today.Month, Today.Day).ToString()
                        dgvInformacje.Rows.Item(lvarI - 1).DefaultCellStyle.BackColor = Color.Coral
                End Select

                'sprawdzenie czy schemat ma juz przygotowane wszystkie szeregi
                For Each lvarTmp As clsInhTrSchemat In mvarSchemat.Schemat
                    If lvarTmp.Id = CInt(lvarRow.Item("schemat")) Then
                        For Each lvarTmp1 As clsInhTrPozycjeSchematu In lvarTmp.PozycjeSchematu
                            For Each lvarTmp2 As clsInhTrMaszynaPozycjiSchematu In lvarTmp1.Maszyny
                                If CDbl(lvarTmp2.Maszyna.Wydluzenie_1) <> 0 AndAlso CDbl(lvarTmp2.Maszyna.Wydluzenie_2) <> 0 Then
                                    If Not lvarTmp2.Szereg Then
                                        dgvInformacje.Rows.Item(lvarI - 1).DefaultCellStyle.BackColor = Color.LimeGreen
                                        Exit For
                                    End If
                                End If
                            Next
                        Next
                    End If
                Next

            Next
        End If
        mvarWyznUruchomienia = False

    End Sub


    Private Sub cmdWyczyscSzczegoly_Click(sender As System.Object, e As System.EventArgs) Handles cmdWyczyscSzczegoly.Click

        cmbNazwaFirmy.SelectedIndex = -1
        dtpDataRealizacjiOd.Text = Now.ToShortDateString()
        dtpDataRealizacjiDo.Text = Now.ToShortDateString()
        dtpDataRealizacjiOd.Checked = False
        dtpDataRealizacjiDo.Checked = False

    End Sub

    Private Sub cmdSzukaj_Click(sender As System.Object, e As System.EventArgs) Handles cmdSzukaj.Click
        Szukaj()
    End Sub

    Private Sub dgvInformacje_CellMouseDoubleClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgvInformacje.CellMouseDoubleClick

        If dgvInformacje.SelectedRows.Count = 0 Then
            MessageBox.Show("Wybierz zlecenie", "WIREMET")
        Else
            Dim lvarFrm As New frmTrPozycjaZlecenia(dgvInformacje.SelectedRows(0).Cells("colKlient").Value.ToString(), dgvInformacje.SelectedRows(0).Cells("colTermin").Value.ToString(), CInt(dgvInformacje.SelectedRows(0).Cells("colPozycjaZleceniaId").Value), CInt(dgvInformacje.SelectedRows(0).Cells("colSchematId").Value), 0, False, False)
            With lvarFrm
                .MdiParent = MdiParent
                .Show()
            End With
        End If

    End Sub


    Private Sub frmSzukajZlecenia_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        mvarDbHolder.Close()
    End Sub

#Region "Changed"

    Private Sub dtpDataRealizacjiOd_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles dtpDataRealizacjiOd.TextChanged
        chbDataRealizacji.Checked = True
    End Sub

    Private Sub dtpDataRealizacjiDo_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles dtpDataRealizacjiDo.TextChanged
        chbDataRealizacji.Checked = True
    End Sub

#End Region

    Private Sub frmTrZleceniaSzukaj_Load(sender As Object, e As EventArgs) Handles Me.Load
        mvarWyznUruchomienia = True
        Szukaj()
        If dgvInformacje.Rows.Count <> 0 Then
            dgvInformacje.ClearSelection()
        End If
    End Sub

End Class